<?php
namespace User\Controller;
use Think\Controller;
/**
 * UpdateController.class.php 生成待办数据处理类
 */
class UpdateController extends CommonController{
    /* 属性声明 */
    
    /* 方法声明 */
    public function __construct() {
        parent::__construct();
    }
    
    /**
     * 处理提交数据
     */
    public function index(){
        if(!$uuid = session('uuid')){
            $this -> error('未知成员uuid数据!');
        }
        if(!$corpid = session('corpid')){
            $this -> error('未知corpid数据!');
        }
        $this -> uuid = $uuid;
        $userinfo = $this -> redis -> hget('user_list',$uuid);
        if(!$userinfo){
            $this -> error('未知成员uuid数据!');
        }
        $this -> success('提交审核成功!');exit;
        //分析成员更改数据
        $this -> checkInfo(json_decode($userinfo,true),$corpid);
    }
    
    /**
     * 分析处理成员数据
     * @param array $info 成员数据
     * @param string $corpid 企业号corpid
     */
    private function checkInfo($info,$corpid){
        $info = $info['information'];
        $name_list = array_column($info,'name');

        //1.整理员工基本信息
        $flag = false;
        $index = array_search('BO_CASC_HR_YGRS',$name_list);
        $base_info = $info[$index]['sublist'];
        //1.1 获取成员用户名
        $base_name_list = array_column($base_info,'name');
        $base_name_index = array_search('YGXM',$base_name_list);
        $user_name = $base_info[$base_name_index]['value'];
        //1.2 整理员工基本信息更改数据
        $base_update_list = [];
        foreach($base_info as $k => $v){
            if($v['type']=='DATE'){
                $v['oldvalue'] = 
                str_replace(' 00:00:00','',$v['oldvalue']);
            }
            if($v['name']=='JG' || $v['name']=='CSD' || $v['name']=='HKSZD'){                   $v['oldvalue'] = explode('--',$v['oldvalue'])[0];
            }
            //双值一样则不处理
            if($v['value']==$v['oldvalue']){
                continue;
            }elseif($v['value']=='' && $v['oldvalue']=='无'){
                continue;;
            }elseif($v['oldvalue']==''){
                continue;;
            }else{
                $base_update_list[] = $v;
                $flag = true;
            }
        }

        //2.员工基本信息回写集合
        $info[$index]['sublist'] = $base_update_list;
        //3.整理可拓展子集数据
        $ext_update_list = [];
        foreach($info as $k => $v){
            if($v['name']=='BO_CASC_HR_YGRS'){
                continue;
            }
            //分析状态数据
            $status = $v['status'];
            if($status['insert'] || $status['update'] || $status['delete']){
                $ext_update_list[] = $v;
            }
        }
        //4.最终整理数据
        $result = null;
        if($flag){
            if($ext_update_list){
                $ext_update_list[] = $info[$index];
                $result = $ext_update_list;
            }else{
                $result[] = $info[$index];
            }
        }else{
            if($ext_update_list){
                $result = $ext_update_list;
            }
        }
        if(!$result){
            $this -> error('您还未做任何更改!');
        }else{
            $temp['uuid'] = $this -> uuid;
            $temp['corpid'] = $corpid;
            $temp['time'] = time();
            $temp['information'] = $result;
            //向aws推送代办数据

            $result = A('Aws') -> dealt($this->uuid,$user_name);

            
            /* 临时调试 $result = true */
            //$result = true;

            if($result){
                //生成代码信息写入redis数据库
                $res = $this -> redis -> 
                hset('user_dealt',$this->uuid,  json_encode($temp));
                if(!$res){
                    $this -> error('数据写入失败,请稍后重试!');
                }
                $this -> success('提交审核成功!');
            }else{
                //aws接口连接失败
                $this -> error('服务器暂时忙,请稍后再试!');
            }
        }
    }
}